The ability to replicate and store data is an important feature in many storage systems. In some storage systems, data is replicated at many storage devices to safeguard against the failure of a single storage device or medium. Upon a failure of a first storage device or medium, the system retrieves a copy of the data contained in a second storage device or medium. Users are able to recover data that is inadvertently erased or edited.
In distributed storage systems, data can be stored at different nodes throughout the system. In some systems, a coordinator manages data flow to and from the various nodes. As the coordinator receives updated data, these updates are sent to plural different nodes for storage throughout the system.
Some distributed storage systems are susceptible to partial writes. A partial write occurs when the coordinator crashes while propagating new data to the various nodes. In this instance, complete copies of the data only arrive at a minority number of nodes. The storage system is left in a non-deterministic state because a subsequent read from a node can return either a new or old value, depending on whether the majority that reads intersects or not the minority that wrote it.
Some storage systems and storage software products provide ways to make point-in-time copies of disk volumes, sometimes referred to as snapshots or clones (a clone is a writable snapshot). The process or making point-in-time copies needs to be carefully performed so that the snapshots and clones accurately reflect the data. An inconsistent state can occur when old and new versions of different blocks of data are mixed.